Computer virtualization is a technique that involves encapsulating a physical computing machine platform into a virtual machine that is executed under the control of virtualization software on a hardware computing platform, or “host”. Consolidating multiple virtual machines onto a single host requires careful management and allocation of computing resources to each virtual machine. For example, a host system reserves a certain amount of physical memory for use by each virtual machine. Because of the memory management techniques the host may employ, the virtual machines can use more memory than the physical hardware platform has available. However, this can result in an “overcommitment”. For example, the host may have 2 GB of physical memory and run four virtual machines with 1 GB memory each. In that case, the memory is overcommitted. Overcommitment may be an efficient use of resources in some cases because some virtual machines may be lightly loaded while others are more heavily loaded, and relative activity levels vary over time. Thus, even though 4 GB of memory is committed, actual memory use may remain below the physical 2 GB capacity.
A host may employ several techniques to improve memory utilization. For example, the host may re-allocate free memory from idle virtual machines to virtual machines that need more memory. In another technique, a host can employ swapping, a technique for freeing up physical memory by temporarily storing data from physical memory in secondary storage, in data blocks known as “pages”. Due to the transfer speed of secondary storage, however, transferring data to and from secondary storage may be a costly operation.